This patch fixes two problems with sending and receiving of (arrays of)
authorEwan Mellor <ewan@xensource.com>
Fri, 9 Mar 2007 16:04:19 +0000 (16:04 +0000)
committerEwan Mellor <ewan@xensource.com>
Fri, 9 Mar 2007 16:04:19 +0000 (16:04 +0000)
structures.

The first one allows to determine the size of a member when parsing a
'set'.
The cast in the second part fixes the address calculation when
serializing an array.

Signed-off-by: Stefan Berger <stefanb@us.ibm.com>
tools/libxen/src/xen_common.c

index c6e21818506ec605daa8fa2434cc51f1588e3d88..5d72cab177c4898feff88a2d065b9d02eeff024e 100644 (file)
@@ -890,6 +890,9 @@ static size_t size_of_member(const abstract_type *type)
     case REF:
         return sizeof(arbitrary_record_opt *);
 
+    case STRUCT:
+        return type->struct_size;
+
     default:
         assert(false);
     }
@@ -1215,7 +1218,8 @@ add_struct_value(const struct abstract_type *type, void *value,
 
             for (size_t i = 0; i < set_val->size; i++)
             {
-                void *member_value = set_val->contents + (i * member_size);
+                void *member_value = (char *)set_val->contents +
+                                     (i * member_size);
                 add_struct_value(member_type, member_value,
                                  add_unnamed_value, NULL, data_node);
             }